/*******************************************************************************
* Имя файла: chatClient.h
* Дата: 01-06-2024
* Разработчик: Андрей Подлегаев
* Группа: 315
* Факультет: ЦДО ТУСУР
* Лицензия: BSD
* Описание: Клиент-серверное приложение (ЦДО ТУСУР)
* *****************************************************************************/

#ifndef CHATCLIENT_H
#define CHATCLIENT_H

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <thread>
#include <signal.h>
#include <mutex>

#include "colorConsole.h"

static const char* IP_ADDRESS = "127.0.0.1";
const int PORT = 1200;

static const int MAX_LEN_MESSAGE = 200;
static const int MAX_LEN_USER_NAME = 200;

inline std::thread thSend, thRecv;
static int clientSocket;
static bool exitFlag = false;

/* Прототип функции обработки Ctrl + C */
void processCtrl(int signal);

/* Прототип функции получения цвета для клиента */
Color getColor(const int& id);

/* Прототип функции удаления теста обращения к текущему пользователю */
void deleteTextRequest(const int& len);

/* Прототип функции вывода сообщений в терминал */
void printMessages(const std::string& str, Color color = COLOR_LIGHT_GRAY,
                   const bool endMessages = true);

/* Реализация функции отправки сообщений */
void sendMessage(int clientSocket);

/* Реализация функции получения сообщений */
void receiveMessage(int clientSocket);

#endif // CHATCLIENT_H
